﻿// See https://aka.ms/new-console-template for more information
/// <summary>
/// 状态模式的客户端代码
/// 演示了订单状态转换的完整流程和非法操作的处理
/// </summary>
Console.WriteLine("Hello, World!");

/// <summary>
/// 创建订单上下文对象
/// 初始化时自动进入待支付状态
/// </summary>
var order = new OrderContext();

/// <summary>
/// 演示订单的正常流程
/// 1. 支付订单 - 从待支付状态转换到已支付状态
/// 2. 发货操作 - 从已支付状态转换到已发货状态
/// 3. 完成订单 - 从已发货状态转换到已完成状态
/// </summary>
order.Pay();       // ✅ 成功支付 → 进入 PaidState
order.Ship();      // ✅ 发货 → 进入 ShippedState
order.Complete();  // ✅ 完成 → 进入 CompletedState

/// <summary>
/// 演示非法操作
/// 尝试在已完成状态下取消订单，这是不允许的操作
/// </summary>
Console.WriteLine("\n--- 尝试非法操作 ---");
order.Cancel();    // ❌ 已完成，不能取消